SAAS version of ErgRace

Launch ErgRace with command line parameters

-p NNNNNN	Instead of socket connection on port 443, use the specified port.
-s ABCDEF	Instead of creating file structures and settings at %HomePath%\Documents\Concept2\ErgRace\..., the path will be 
			%homepath%\Documents\Concept2\ErgRace\ABCDEF\...
(ToDo) 
-h			Run in Headless mode, suppress all dialog boxes.  If not specfied, then RUNGUARD will be 
			enabled and only ONE session can exist on any PC. Not suggested for Desktop use.
-a			Launch ErgRace in "Advanced" mode (this has nothing to do with SAAS, but useful shortcut for testing)

Settings are now stored in ..\Settings\ergracesettings.ini.  Example file is below.  Please do not modify unless you know
what you are doing.

[General]
Log%20Files%20Path=C:/Users/scott/Documents/Concept2/ErgRace/Scott/Log
Race%20Files%20Path=C:/Users/scott/Documents/Concept2/ErgRace/Scott/Races
Results%20Files%20Path=C:/Users/scott/Documents/Concept2/ErgRace/Scott/Results
Copy%20of%20Results%20Files%20Path=C:/Users/scott/Documents/Concept2/ErgRace/Scott/ResultsCopy
Erg%20Map%20Path=C:/Users/scott/Documents/Concept2/ErgRace/Scott/Maps
Window%20Geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0l\0\0\0\x9f\0\0\x4i\0\0\x2\xdf\0\0\0m\0\0\0\xbe\0\0\x4h\0\0\x2\xde\0\0\0\0\0\0\0\0\n\0\0\0\0m\0\0\0\xbe\0\0\x4h\0\0\x2\xde)
Copy%20Results%20Files=false
Starting%20Lane%20Number=1
Attention%20Min%20Delay%20MS=1500
Attention%20Max%20Delay%20MS=3000
Start%20Min%20Delay%20MS=1500
Start%20Max%20Delay%20MS=2000
Race%20Poll%20Interval%20MS=1000
PM%20Sample%20Interval%20MS=500
Race%20Start%20Type=0
Paper%20Size=0
Display%20Units%20Distance%20Race=31
Display%20Units%20Time%20Race=30
Display%20Units%20Calorie%20Race=33
Display%20Units%20Time%20Race%20Calorie%20Score=33
Upload%20Diagnostics=true
Wireless%20Channel%20Configuration=0
Default%20Language=No Change
Async%20Timeout%20MS=60
Broadcast%20Timeout%20MS=40
Multicast%20Timeout%20MS=5
PM%20Languages=Default, English, Deutsch, Fran\xe7\x61is, Nederlands, Espa\xf1ol, Italiano, Suomi, Portugu\xeas, Svenska, Dansk, Slovak, \x7b80\x4f11\x4e2d\x6587, \x65e5\x672c\x8a9e, P\x443\x441\x441\x43a\x438\x439, \xd55c\xad6d\xc5b4
Race%20Event%20Name=
Distributed%20Race%20Server%20URL=ws://ergrace.concept2.com/socket/gpqtVj
Cloud%20Server%20URL=ws://racing.concept2.com/socket/lQlP3P
Race%20Is%20Public=true
Erg%20Status%20Window%20Geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\x2!\0\0\x4\b\0\0\x3\x90\0\0\0\0\0\0\x2!\0\0\x4\b\0\0\x3\x90\0\0\0\0\0\0\0\0\n\0\0\0\0\0\0\0\x2!\0\0\x4\b\0\0\x3\x90)




API commands and examples:

discover
{"remote_ergrace_action":{"action":"discover"}}
number_all
{"remote_ergrace_action":{"action":"number_all"}}
number_missing
{"remote_ergrace_action":{"action":"number_missing"}}
erg_status
{"remote_ergrace_action":{"action":"erg_status"}}
set_starting_lane
{"remote_ergrace_action":{"action":"set_starting_lane",{"config":"lane":1}}}
standard_numbering
{"remote_ergrace_action":{"action":"standard_numbering"}}
done
{"remote_ergrace_action":{"action":"done"}}
set_erg_map
{"remote_ergrace_action":{"action":"set_erg_map","config":{"map":{"erg_map":[{"lane_number":2,"secondary_ergs":[],"serial_number":530126209}]}}}}
load_erg_map
{"remote_ergrace_action":{"action":"load_erg_map","config":{"file_name":"NewErgMap.json"}}}
save_erg_map
{"remote_ergrace_action":{"action":"save_erg_map","config":{"file_name":"NewErgMap.json"}}}
clear_erg_map
{"remote_ergrace_action":{"action":"clear_erg_map"}}
normal_mode
{"remote_ergrace_action":{"action":"normal_mode"}}
get_races
{"remote_ergrace_action":{"action":"get_races"}}
save_race
{"remote_ergrace_action":{"action":"save_race","config":{"race":{"file_name":"r.rac2","race_definition":{"boats":[{"class_name":"","lane_number":1,"name":"Lane_1","participants":[{"name":""}]}],"duration":30,"duration_type":"time","event_name":"q","name_long":"race","name_short":"r","race_id":"","race_type":"individual","split_value":30,"team_size":1,"time_cap":0}}}}}
save_load
{"remote_ergrace_action":{"action":"save_load","config":{"race":{"file_name":"r.rac2","race_definition":{"boats":[{"class_name":"","lane_number":1,"name":"Lane_1","participants":[{"name":""}]}],"duration":30,"duration_type":"time","event_name":"q","name_long":"race","name_short":"r","race_id":"","race_type":"individual","split_value":30,"team_size":1,"time_cap":0}}}}}
load_race
{"remote_ergrace_action":{"action":"load_race", "config":{"file_name":"r.rac2"}}}
merge_results
{"remote_ergrace_action":{"action":"merge_results","config":{"file_name":"MergedResults.json"}}}
send_results
{"remote_ergrace_action":{"action":"send_results"}}
prepare
{"remote_ergrace_action":{"action":"prepare"}}
start
{"remote_ergrace_action":{"action":"start"}}
stop
{"remote_ergrace_action":{"action":"stop"}}
warmup
{"remote_ergrace_action":{"action":"warmup"}}


(ToDo)
retrieve a setting
{"remote_ergrace_action":{"action":"Get_Setting","config":{"Attention%20Max%20Delay%20MS"}}}               would return the current value stored
set a ErgRace setting
{"remote_ergrace_action":{"action":"Change_Setting","config":{"Attention%20Max%20Delay%20MS":"1000"}}}     would set the AttenMaxDelay to 1000mS

